如何将字符串输入 shell 命令并获取它在 Haskell 中产生的输出?
例如,考虑到:
> myHaskellProg
"blah"
> myHaskellProg | wc
4
Run Code Online (Sandbox Code Playgroud)
我想
> myHaskellProg
Run Code Online (Sandbox Code Playgroud)
4通过调用wc并打印结果来打印
我能够使用process's调用 shell 命令callCommand
,但如何通过管道将字符串传递给它并返回结果或 stderr?
我有一个包含单个文件的目录,one.txt. 如果我跑步ls | cat,效果很好。但是,如果我尝试跟踪该管道的两侧,我确实会看到命令的输出以及 strace,但该过程并未完成。
strace ls 2> >(stdbuf -o 0 sed 's/^/command1:/') | strace cat 2> >(stdbuf -o 0 sed 's/^/command2:/')
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:
command2:execve("/usr/bin/cat", ["cat"], [/* 50 vars */]) = 0
command2:brk(0) = 0x1938000
command2:mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f87e5a93000
command2:access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
<snip>
command2:open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
command2:fstat(3, {st_mode=S_IFREG|0644, st_size=106070960, ...}) = 0
command2:mmap(NULL, 106070960, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f87def8a000
command2:close(3) = 0
command2:fstat(1, {st_mode=S_IFCHR|0620, …Run Code Online (Sandbox Code Playgroud) 非常感谢任何帮助。
我有一个包含 30 多个文件夹的文件夹,每个文件夹都有一个 .txt 文件,我可以使用以下命令进行搜索:
Get-ChildItem -Filter *.txt -Recurse
我想读取发现的每个 .txt 文件的内容,并将内容输出到桌面上的新 .csv 文件中,该文件还包括显示的每个 .txt 文件内容的目录。
问题是双重的,
如何使用管道和 powershell 命令读取/显示文件中的所有单词。
如何创建将输出目录名称和 .txt 文件内容的 csv 数据。
我已经可以将结果传送到:
c:\desktop\test.csv -编码 ascii -noTypeInformation
我正在阅读 Angular 的文档及其 RxJS 库的使用。我找到了这个信息
您可以使用管道将运算符连接在一起。管道允许您将多个函数组合成一个函数。pipeline() 函数将要组合的函数作为参数,并返回一个新函数,该函数在执行时会按顺序运行组合函数。
所以管道的目的是链接多个函数,但让我好奇的是,我多次看到pipe内部只使用一个函数,例如:
this.itemSubscription = this.store
.pipe(select(state => state.items.root))
.subscribe(state => {
this.items = state.items;
});
Run Code Online (Sandbox Code Playgroud)
当我尝试使用selectwithoutpipe时,我的 tslint 会说:
select 已弃用:从 6.1.0 开始。请改用可管道选择运算符。(弃用)tslint(1)
为什么会发生这种情况?我错过了什么吗?在网上找不到相关解释。
<ng-select \n [items]="prozessItem$ | async" \n [multiple]="true" \n bindLabel="itemName | umlautsPipe" \n bindValue="nrItems"\n></ng-select>\nRun Code Online (Sandbox Code Playgroud)\n\n我想通过管道将 itemName 从 传输"\xc3\xbc\xc3\xa4\xc3\xb6\xc3\x9fTEST"到"ueaeoessTest"。异步管道工作得很好,没有我得到的管道"\xc3\xbc\xc3\xa4\xc3\xb6\xc3\x9fTEST"。ng-select 只接受属性中的字符串值。我可能会误解它,但我相信当我使用 时bindLabel="itemName | umlautsPipe", ng-select 试图引用item[itemName | umlautsPipe]不存在的内容。
那么如何转换项目的名称呢?
\n我创建了唯一的管道来从数组中删除重复的项目,并将其导入到 app.module.ts 中
这是我的代码。
应用程序模块.ts
import { UniquePipe } from './_pipe/uniquePipe';
@NgModule({
imports: [BrowserModule, CommonModule, FormsModule, ReactiveFormsModule, HttpClientModule, UniquePipe],
// tslint:disable-next-line:max-line-length
declarations: [ AppComponent, UniquePipe],
exports: [UniquePipe ],
bootstrap: [ AppComponent ],
})
Run Code Online (Sandbox Code Playgroud)
独特的Pipe.ts
import { Pipe, PipeTransform } from '@angular/core';
import * as _ from 'lodash';
@Pipe({
name: 'unique',
pure: false
})
export class UniquePipe implements PipeTransform {
transform(value: any): any {
if (value !== undefined && value !== null) {
return _.uniqBy(value, 'type');
}
return value;
}
} …Run Code Online (Sandbox Code Playgroud) 嗨,我不断收到Error: Column column is unknown错误dplyr。我无法修改函数来消除错误。我之所以想做这个函数,是因为我必须对其他变量重复这个过程。
数据可以在这里找到:http ://www.personal.psu.edu/dlp/w540/datasets/titanicsurvival.csv
one_col_count <- function(data, column){
data %>%
group_by(column)%>%
count() %>%
ungroup() %>%
add_row(column= "Total", n= sum(.$n)) -> dataset
return(dataset)
}
survival_count <- one_col_count(dat, as.name("Survived"))
#dat is a data.frame where I changed to types of every column to factor
#Whereas this works
#survival_count <- dat %>%
# group_by(Survived)%>%
# count() %>%
# ungroup() %>%
# add_row(Survived= "Total",
# n= sum(.$n))
#And I get the output
## A tibble: 3 x …Run Code Online (Sandbox Code Playgroud) 我正在阅读管道函数的文档,并且遇到了这个
pipe() creates a pipe, a unidirectional data channel that can be used for interprocess communication
Run Code Online (Sandbox Code Playgroud)
但它返回两个文件描述符。一种用于阅读,一种用于写作。我缺少什么?
鉴于:
Bash 命令行(终端 1):
> mkfifo pipo
> cat pipo
Run Code Online (Sandbox Code Playgroud)
Bash 命令行(终端 2):
> echo -e "Hello World\nHi" > pipo
Run Code Online (Sandbox Code Playgroud)
结果:
(1 号航站楼)中的 bash 打印:
Hello World
Hi
Run Code Online (Sandbox Code Playgroud)
并中止。
问题:
我怎样才能实现它不中止,但允许发送另一个回显pipo?
我有两个脚本:
install.sh
#!/usr/bin/env bash
./internal_install.sh
Run Code Online (Sandbox Code Playgroud)
internal_install.sh
#!/usr/bin/env bash
set -x
while true; do
read -p "Hello, what's your name? " name
echo $name
done
Run Code Online (Sandbox Code Playgroud)
当我运行时./install.sh,一切都按预期进行:
> ./install.sh
+ true
+ read -p 'Hello, what'\''s your name? ' name
Hello, what's your name? Martin
+ echo Martin
Martin
...
Run Code Online (Sandbox Code Playgroud)
但是,当我运行时cat ./install.sh | bash,该read函数不会阻塞:
cat ./install.sh | bash
+ true
+ read -p 'Hello, what'\''s your name? ' name
+ echo
+ true
+ read -p …Run Code Online (Sandbox Code Playgroud)